• Description:
    From 0.15 can be inline assembler used in more confortable was. You are able to use constants, variables and more in your assembler source. You can also use normal PowerD comments.

  • Limitations:
    This feature requies sth like complete assembler reader. (Assembler writer is already contained in PowerD). I supported as much instructions and their addressing modes as I know, but these things requies lots of numbers and tables, so if You will find an error, please report.

  • Syntax:
    PowerD knows two ways of assembler usage in it's source. First way starts with ASM and ends with ENDASM keyword. Assembler code can be used only between these two keywords. Else some systax errors will appear. Second way is assembler-only procedure. Such procedure starts with APROC and ends with ENDPROC keyword.
      ASM
        here should be your assembler routines
      ENDASM
    
      APROC compute(d0:LONG,d1:LONG,d2:LONG)(LONG)
        here should be your assembler routines
      ENDPROC
    
  • PowerD known instructions:
     abcd, add,  adda, addi, addq, addx, and,  andi,
     asl,  asr,  bcc,  bchg, bclr, bra,  bset, bsr,
     btst, cas,  chk,  chk2, clr,  cmp,  cmpa, cmpi,
     cmpm, divs, divsl,divu, divul,eor,  eori, exg,
     ext,  jmp,  jsr,  lea,  link, lsl,  lsr,  move,
     muls, mulu, neg,  negx, nop,  not,  ori,  pea,
     rol,  ror,  roxl, roxr, rts,  scc,  sub,  suba,
     subi, subq, subx, swap, tas,  tst,  unlk
    
  • PowerD known addressing modes:
    PowerD used only 020 addressing modes, so obsolete modes like 123(a0) have to be changed to (123,a0). PowerD knows all 68k addressing modes. When addressing local PowerD variables, they have to be used alone, while global variables can be used much more comfortable ways:
      move.l  lvar,a0
      move.l  d2,lvar
      addi.l  #1,lvar
    
      move.l  ([gvar,pc],d0.w*8),d0
      move.l  ([gvar]),d0